home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #123 (1991-06)(Rhein-Sieg-Soft).zip
/
Franz PD Disk #123 (1991-06)(Rhein-Sieg-Soft).adf
/
AdressDat_V1.3
/
AdressDat_V1.3
< prev
next >
Wrap
Text File
|
1991-06-05
|
19KB
|
607 lines
REM Dieses Programm ist Public Domain.
Main:
CLEAR
GOSUB Init
GOSUB Zeit
GOSUB Bildaufbau
DIM Daten$(6)
GOSUB Warten
OPEN "AdressDat.config" FOR OUTPUT AS 2
PRINT #2,Feldzaehler
CLOSE 1,2
LIBRARY CLOSE
WINDOW CLOSE 2
SCREEN CLOSE 1
MENU RESET
END
Init:
DEFINT a-z
LIBRARY "graphics.library"
LIBRARY "intuition.library"
WindowTitle$="AdressDat V1.3 - Public Domain" +SPACE$(41)
SCREEN 1,640,256,2,2
WINDOW 2," ",,0,1
wptr&=WINDOW(7)
rp&=WINDOW(8)
PALETTE 0,0,0,0
PALETTE 1,13/15,13/15,8/15
PALETTE 2,6/15,6/15,9/15
PALETTE 3,1,0,0
MENU 1,0,1,"" : MENU 2,0,1,"" : MENU 3,0,1,"" : MENU 4,0,1,""
DIM DatFeld$(6)
OPEN "Adressen" AS 1 LEN=227
FIELD #1,30 AS DatFeld$(0),30 AS DatFeld$(1),20 AS DatFeld$(2),12 AS DatFeld$(3),45 AS DatFeld$(4),45 AS DatFeld$(5),45 AS DatFeld$(6)
DIM Laenge(6)
RESTORE Laengen
FOR i=0 TO 6
READ Laenge(i)
NEXT
OPEN "AdressDat.config" FOR APPEND AS 2
IF LOF(2)=0 THEN
CLOSE 2
OPEN "AdressDat.config" FOR OUTPUT AS 2
PRINT #2,1
END IF
CLOSE 2
OPEN "AdressDat.config" FOR INPUT AS 2
INPUT #2,Feldzaehler
CLOSE 2
RETURN
Bildaufbau:
DIM x(3),y(9),Feld$(4)
RESTORE MaskeX
FOR i=0 TO 3 : READ x(i) : NEXT
RESTORE MaskeY
FOR i=0 TO 9 : READ y(i) : NEXT
RESTORE Namen
FOR i=0 TO 4 : READ Feld$(i) : NEXT
FOR x1=0 TO 3 STEP 2
x2=x1+1
FOR y1=0 TO 9 STEP 2
y2=y1+1
CALL SetAPen& (rp&,3)
CALL RectFill& (rp&,x(x1)-1,y(y1)-1,x(x2)+1,y(y2)+1)
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,x(x1),y(y1),x(x2),y(y2))
NEXT
NEXT
CALL SetAPen& (rp&,1) : CALL SetBPen& (rp&,0)
CALL SetDrMd& (rp&,0)
FOR i=0 TO 4
j=i*2
CALL Move& (rp&,x(0)+4,y(j)+10)
CALL Text& (rp&,SADD(Feld$(i)+CHR$(0)),LEN(Feld$(i)))
NEXT
RETURN
Warten:
Aus=0
WHILE NOT Aus
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,0,640,30)
CALL RectFill& (rp&,0,132,640,246)
Outline "AdressDat by Jakob Tschuschke",1,0,-1,14,rp&
Shadow "Adressen:",1,2,30,142,rp&
Shadow "(E)ingeben (A)endern",1,2,-1,154,rp&
Shadow "(L)esen (S)uchen",1,2,-1,166,rp&
Shadow "(Q)uit",1,2,-1,210,rp&
Taste "EALSQ",Antwort$
IF Antwort$="E" THEN GOSUB Eingabe
IF Antwort$="A" THEN GOSUB Aendern
IF Antwort$="L" THEN GOSUB Lesen
IF Antwort$="S" THEN GOSUB Suchen
IF Antwort$="Q" THEN GOSUB Quit
WEND
TIMER OFF
RETURN
Eingabe:
Zurueck=0
WHILE NOT Zurueck
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,0,640,30)
CALL RectFill& (rp&,0,132,640,256)
x1=2 : x2=3
FOR y1=0 TO 9 STEP 2
y2=y1+1
CALL RectFill& (rp&,x(x1),y(y1),x(x2),y(y2))
NEXT
Shadow "Datensatznummer : "+STR$(Feldzaehler),1,2,3,27,rp&
Outline "AdressDat - Adressen eingeben:",1,0,-1,14,rp&
CALL SetAPen& (rp&,1)
z=0
FOR i=0 TO 4
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(0)-1,y(z),x(1)+1,y(z+1))
j=i*2
CALL SetDrMd& (rp&,1)
xEdit Daten$(i),Laenge(i),x(2)+4,y(j)+10,rp&
IF i <= 3 THEN
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(0)-1,y(z),x(1)+1,y(z+1))
z=z+2
END IF
NEXT
CALL SetDrMd& (rp&,1)
xEdit Daten$(5),Laenge(5),x(2)+4,y(8)+19,rp&
xEdit Daten$(6),Laenge(6),x(2)+4,y(8)+28,rp&
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(0)-1,y(z),x(1)+1,y(z+1))
CALL SetDrMd& (rp&,0)
IF Daten$(0)="" THEN 'Wenn der Name keine Zeichen enthält,
Zurueck=-1 'dann verlassen
ELSE
Shadow "Abspeichen (j/n) ?",1,2,-1,151,rp&
Taste "JN"+CHR$(13),Antwort$
IF Antwort$="J" OR Antwort$=CHR$(13) THEN
Speichernummer=Feldzaehler
GOSUB Speichern
Feldzaehler=Feldzaehler+1
END IF
END IF
WEND
RETURN
Lesen:
Lesenummer=0
Zurueck=0
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,0,640,30)
CALL RectFill& (rp&,0,132,640,256)
Outline "AdressDat - Adressen lesen",1,0,-1,14,rp&
Shadow "<Cursor left> ---> 1 Adresse zurück <Cursor right> ---> 1 Adresse vor",1,2,3,160,rp&
Shadow "<Cursor up> ---> 10 Adressen zurück <Cursor down> ---> 10 Adressen vor",1,2,3,172,rp&
Shadow "<Backspace> ---> Erste Adresse <TAB> ---> Letzte Adresse",1,2,3,184,rp&
Shadow "<Return> ---> Direkter Sprung <ESC> ---> Ende",1,2,3,196,rp&
GOSUB Nummerneingabe
Lesenummer$=Nummer$
WHILE NOT Zurueck
IF UCASE$(Lesenummer$)="E" THEN
Zurueck=-1
ELSE
IF Lesenummer$="" THEN
Lesenummer=Lesenummer
ELSE
Lesenummer=VAL(LEFT$(Lesenummer$,4))
END IF
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,16,640,30)
Ladenummer=Lesenummer : GOSUB Laden : Lesenummer=Ladenummer
IF Erfolg THEN
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,16,640,32)
Shadow "Datensatznummer : "+STR$(LOC(1)),1,2,3,27,rp&
FOR i=0 TO 4
j=i*2
CALL Move& (rp&,x(2)+4,y(j)+10)
CALL Text& (rp&,SADD(DatFeld$(i)+CHR$(0)),LEN(DatFeld$(i)))
NEXT
CALL Move& (rp&,x(2)+4,y(8)+19)
CALL Text& (rp&,SADD(DatFeld$(5)+CHR$(0)),LEN(DatFeld$(5)))
CALL Move& (rp&,x(2)+4,y(8)+28)
CALL Text& (rp&,SADD(DatFeld$(6)+CHR$(0)),LEN(DatFeld$(6)))
Lesenummer$=""
Taste CHR$(8)+CHR$(9)+CHR$(13)+CHR$(27)+CHR$(28)+CHR$(29)+CHR$(30)+CHR$(31),Antwort$
IF Antwort$=CHR$(30) THEN
Lesenummer=Lesenummer+1 'Cursor right
ELSEIF Antwort$=CHR$(31) THEN
Lesenummer=Lesenummer-1 'Cursor left
ELSEIF Antwort$=CHR$(29) THEN
Lesenummer=Lesenummer+10 'Cursor down
ELSEIF Antwort$=CHR$(28) THEN
Lesenummer=Lesenummer-10 'Cursor up
ELSEIF Antwort$=CHR$(9) THEN
Lesenummer=Feldzaehler-1 'TAB
ELSEIF Antwort$=CHR$(8) THEN
Lesenummer=1 'Backspace
ELSEIF Antwort$=CHR$(13) THEN
GOSUB Nummerneingabe 'Return
Lesenummer$=Nummer$
ELSE
Zurueck=-1 'Escape
END IF
END IF
IF NOT Erfolg THEN Zurueck=-1
END IF
WEND
RETURN
Aendern:
Zurueck=0
IF Lesenummer=0 THEN Lesenummer=1
WHILE NOT Zurueck
Geaendert=0
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,0,640,30)
CALL RectFill& (rp&,0,132,640,256)
Outline "AdressDat - Adressen ändern",1,0,-1,14,rp&
CALL SetAPen& (rp&,3)
CALL Move& (rp&,3,27)
CALL SetDrMd& (rp&,1)
Out$="Bitte Datensatznummer eingeben (0 für Ende) ---> "+CHR$(0)
CALL Text& (rp&,SADD(Out$),LEN(Out$)-1)
CALL SetAPen& (rp&,1)
LINE INPUT Aendernummer$
IF Aendernummer$="0" THEN
Zurueck=-1
ELSE
IF Aendernummer$="" THEN
Aendernummer=Lesenummer
Lesenummer=Lesenummer+1
ELSE
Aendernummer=VAL(LEFT$(Aendernummer$,4))
END IF
CALL Move& (rp&,3,27)
CALL ClearEOL& (rp&)
Ladenummer=Aendernummer : GOSUB Laden
IF Erfolg THEN
Shadow "Datensatznummer : "+STR$(LOC(1)),1,2,3,27,rp&
Shadow "Wenn Du in dem markierten Bereich etwas ändern willst,",1,2,3,140,rp&
Shadow "drücke «DELETE», sonst «RETURN» !",1,2,3,152,rp&
FOR i=0 TO 6
Daten$(i)=DatFeld$(i)
NEXT
FOR i=0 TO 4
j=i*2
CALL Move& (rp&,x(2)+4,y(j)+10)
CALL Text& (rp&,SADD(Daten$(i)+CHR$(0)),LEN(Daten$(i)))
NEXT
CALL Move& (rp&,x(2)+4,y(8)+19)
CALL Text& (rp&,SADD(Daten$(5)+CHR$(0)),LEN(Daten$(5)))
CALL Move& (rp&,x(2)+4,y(8)+28)
CALL Text& (rp&,SADD(Daten$(6)+CHR$(0)),LEN(Daten$(6)))
FOR i=0 TO 4
j=i*2
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(2),y(j),x(3),y(j)+12)
CALL SetDrMd& (rp&,0)
Taste CHR$(13)+CHR$(127),Antwort$
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(2),y(j),x(3),y(j)+12)
CALL SetDrMd& (rp&,0)
IF Antwort$=CHR$(127) THEN
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Bitte den neuen Text eingeben",3,2,-1,140,rp&
Shadow "Zur Erinnerung : Der alte Text lautete",1,2,5,155,rp&
Shadow Daten$(i),1,2,5,166,rp&
CALL SetDrMd& (rp&,1)
CALL Move& (rp&,x(2)+4,y(j)+10)
CALL Text& (rp&,SADD(SPACE$(46)+CHR$(0)),46)
CALL SetAPen& (rp&,3)
xEdit Daten$(i),Laenge(i),x(2)+4,y(j)+10,rp&
Geaendert=-1
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Wenn in dem markierten Bereich etwas ändern willst,",1,2,3,140,rp&
Shadow "drücke «DELETE», sonst «RETURN» !",1,2,3,152,rp&
END IF
IF i=4 THEN
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(2),y(j)+12,x(3),y(j)+21)
CALL SetDrMd& (rp&,0)
Taste CHR$(13)+CHR$(127),Antwort$
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(2),y(j)+12,x(3),y(j)+21)
CALL SetDrMd& (rp&,0)
IF Antwort$=CHR$(127) THEN
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Bitte den neuen Text eingeben",3,2,-1,140,rp&
Shadow "Zur Erinnerung : Der alte Text lautete",1,2,5,155,rp&
Shadow Daten$(5),1,2,5,166,rp&
CALL SetAPen& (rp&,0)
CALL Move& (rp&,x(2)+4,y(j)+19)
CALL Text& (rp&,SADD(SPACE$(46)+CHR$(0)),46)
CALL SetAPen& (rp&,3)
xEdit Daten$(5),Laenge(5),x(2)+4,y(j)+19,rp&
Geaendert=-1
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Wenn Du in dem markierten Bereich etwas ändern willst,",1,2,3,140,rp&
Shadow "drücke «DELETE» sonst «RETURN» !",1,2,3,152,rp&
END IF
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(2),y(j)+21,x(3),y(j)+32)
CALL SetDrMd& (rp&,0)
Taste CHR$(13)+CHR$(127),Antwort$
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(2),y(j)+21,x(3),y(j)+32)
CALL SetDrMd& (rp&,0)
IF Antwort$=CHR$(127) THEN
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Bitte den neuen Text eingeben",3,2,-1,140,rp&
Shadow "Zur Erinnerung : Der alte Text lautete",1,2,5,155,rp&
Shadow Daten$(6),1,2,5,166,rp&
CALL SetDrMd& (rp&,1)
CALL Move& (rp&,x(2)+4,y(j)+28)
CALL Text& (rp&,SADD(SPACE$(46)+CHR$(0)),46)
CALL SetAPen& (rp&,3)
xEdit Daten$(6),Laenge(6),x(2)+4,y(j)+28,rp&
Geaendert=-1
END IF
END IF
CALL SetDrMd& (rp&,0)
NEXT
IF Geaendert THEN
CALL SetDrMd& (rp&,0)
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Soll die Änderung abgespeichert werden (j/n) ?",1,2,-1,160,rp&
Taste "JN",Antwort$
IF Antwort$="J" THEN Speichernummer=Aendernummer : GOSUB Speichern
END IF
END IF
IF Erfolg=-1 THEN
Zurueck=-1
ELSE
CALL SetDrMd& (rp&,0)
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Weitere Adressen ändern (j/n) ?",1,2,-1,160,rp&
Taste "JN",Antwort$
IF Antwort$="N" THEN Zurueck=-1
END IF
END IF
WEND
RETURN
Suchen:
Zurueck=0
WHILE NOT Zurueck
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,0,640,30)
CALL RectFill& (rp&,0,132,640,256)
Outline "AdressDat - Adressen suchen",1,0,-1,14,rp&
CALL SetAPen& (rp&,3)
CALL Move& (rp&,3,27)
CALL SetDrMd& (rp&,1)
Out$="Ab welcher Datensatznummer suchen? (0 für Ende) ---> "+CHR$(0)
CALL Text& (rp&,SADD(Out$),LEN(Out$)-1)
CALL SetAPen& (rp&,1)
LINE INPUT Suchnummer$
IF Suchnummer$="0" THEN
Zurueck=-1
ELSE
Suchnummer=VAL(Suchnummer$)
IF Suchnummer$="" THEN Suchnummer=1
Ladenummer=Suchnummer : GOSUB Laden
IF Erfolg THEN
Shadow "Wenn Du in dem markierten Bereich etwas suchen willst,",1,2,3,140,rp&
Shadow "drücke «HELP» sonst «RETURN»,",1,2,3,152,rp&
Shadow "oder «G» für Suche in allen Bereichen !",1,2,3,164,rp&
Suchen =-3 ' Muß auf Wert <0 zurckgesetzt werden
FOR i=0 TO 4
j=i*2
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(2),y(j),x(3),y(j+1))
CALL SetDrMd& (rp&,0)
Taste CHR$(13)+CHR$(139)+"G",Antwort$
CALL SetDrMd& (rp&,2)
CALL RectFill& (rp&,x(2),y(j),x(3),y(j+1))
CALL SetDrMd& (rp&,0)
IF Antwort$=CHR$(139) OR Antwort$="G" THEN
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Bitte den Suchbegriff eingeben",3,2,-1,140,rp&
CALL SetDrMd& (rp&,1)
CALL Move& (rp&,x(2)+4,y(j)+10)
CALL Text& (rp&,SADD(SPACE$(46)+CHR$(0)),46)
CALL SetAPen& (rp&,3)
xEdit Suchstring$,Laenge(i),x(2)+4,y(j)+10,rp&
Dummy$=Suchstring$
UpperCase Dummy$,Suchstring$
IF Antwort$="G" THEN Suchen=5 ELSE Suchen=i
i=5 ' Damit die FOR-NEXT-Schleife verlassen wird
END IF
CALL SetDrMd& (rp&,0)
NEXT
IF Suchen >=0 THEN
FOR i=Suchnummer TO Feldzaehler-1
Gefunden=0 : Lesenummer=i 'Damit Satz ohne Nummerneingabe geän-
CALL SetAPen& (rp&,0) 'dert werden kann (siehe Teil "Aendern")
CALL RectFill& (rp&,0,132,640,256)
Shadow "Ich suche ...",1,2,-1,140,rp&
Ladenummer=i : GOSUB Laden
Durchsuch$=DatFeld$(Suchen)
IF Suchen=4 THEN Durchsuch$=DatFeld$(4)+DatFeld$(5)+DatFeld$(6)
IF Suchen=5 THEN Durchsuch$=DatFeld$(0)+DatFeld$(1)+DatFeld$(2)+DatFeld$(3)+DatFeld$(4)+DatFeld$(5)+DatFeld$(6)
Dummy$=Durchsuch$
UpperCase Dummy$,Durchsuch$
Enthalten=INSTR(Durchsuch$,Suchstring$)
IF Enthalten <>0 THEN
Gefunden=-1
CALL Move& (rp&,3,27)
CALL ClearEOL& (rp&)
Shadow "Datensatznummer : "+STR$(i),1,2,3,27,rp&
FOR k=0 TO 4
j=k*2
CALL Move& (rp&,x(2)+4,y(j)+10)
CALL Text& (rp&,SADD(DatFeld$(k)+CHR$(0)),LEN(DatFeld$(k)))
NEXT
CALL Move& (rp&,x(2)+4,y(8)+19)
CALL Text& (rp&,SADD(DatFeld$(5)+CHR$(0)),LEN(DatFeld$(5)))
CALL Move& (rp&,x(2)+4,y(8)+28)
CALL Text& (rp&,SADD(DatFeld$(6)+CHR$(0)),LEN(DatFeld$(6)))
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Weiter suchen (j/n) ?",1,2,-1,140,rp&
Taste "JN",Antwort$
IF Antwort$="N" THEN i=Feldzaehler ' Schleife verlassen
END IF
NEXT
IF NOT Gefunden THEN
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Suchbegriff nicht gefunden",3,2,-1,140,rp&
Outline "Taste ...",3,0,-1,160,rp&
WHILE INKEY$="" : SLEEP : WEND
END IF
END IF
END IF
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,132,640,256)
Shadow "Weitere Adressen suchen (j/n) ?",1,2,-1,140,rp&
Taste "JN",Antwort$
IF Antwort$="N" THEN Zurueck=-1
END IF
WEND
RETURN
Speichern:
FOR i=0 TO 6
LSET DatFeld$(i)=Daten$(i)+SPACE$(45)
NEXT
PUT #1,Speichernummer
RETURN
Laden:
IF Ladenummer <1 OR Ladenummer > Feldzaehler-1 THEN
IF Ladenummer <1 THEN
Ladenummer=1
ELSE
Ladenummer=Feldzaehler-1
END IF
END IF
IF Feldzaehler=1 THEN
BEEP
CALL SetAPen& (rp&,0)
CALL SetDrMd& (rp&,0)
CALL RectFill& (rp&,0,0,640,30)
CALL RectFill& (rp&,0,132,640,246)
Outline "KEINE DATEI VORHANDEN !",1,0,-1,14,rp&
Shadow "Mit «E» neue Adreßdatei erstellen",1,2,-1,142,rp&
Shadow "Taste ...",3,2,-1,178,rp&
WHILE INKEY$="" : SLEEP : WEND
Erfolg=0
ELSE
GET #1,Ladenummer
Erfolg=-1
END IF
RETURN
Quit:
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,0,640,30)
CALL RectFill& (rp&,0,132,640,256)
Outline "AdressDat - Beenden",1,0,-1,14,rp&
Shadow "Soll das Programm wirklich beendet werden (j/n) ?",1,2,-1,160,rp&
Taste "JN",Antwort$
IF Antwort$="J" THEN Aus=-1
RETURN
Nummerneingabe:
CALL SetAPen& (rp&,0)
CALL RectFill& (rp&,0,16,640,30)
CALL Move& (rp&,3,27)
CALL SetAPen& (rp&,3)
CALL SetDrMd& (rp&,1)
Out$="Bitte Datensatznummer eingeben («e» für Ende) ---> "+CHR$(0)
CALL Text& (rp&,SADD(Out$),LEN(Out$)-1)
CALL SetAPen& (rp&,1)
LINE INPUT Nummer$
RETURN
Zeit:
TIMER OFF
Zeit$=TIME$
sekunden=VAL(RIGHT$(Zeit$,1))
CALL SetWindowTitles& (wptr&,SADD(WindowTitle$+Zeit$+CHR$(0)),-1)
ON TIMER (10-sekunden) GOSUB Zeit
TIMER ON
RETURN
MaskeX:
DATA 19,112,118,602
MaskeY:
DATA 34,45,50,62,66,78,82,94,98,130
Namen:
DATA Name,Straße,Ort,Telefon,Bemerkungen
Laengen:
DATA 30,30,20,12,45,45,45
SUB Shadow (Shadow$,a%,b%,x%,y%,rp&) STATIC
LET Shadow%=LEN(Shadow$)
IF x%=-1 THEN x%=309-Shadow%*4 'Wenn fÜr x -1 angegeben, dann zentrieren
LET Shadow$=Shadow$+CHR$(0)
CALL SetDrMd& (rp&,0)
CALL SetAPen& (rp&,b%)
CALL Move& (rp&,x%+2,y%+2)
CALL Text& (rp&,SADD(Shadow$),Shadow%)
CALL SetAPen& (rp&,a%)
CALL Move& (rp&,x%,y%)
CALL Text& (rp&,SADD(Shadow$),Shadow%)
CALL SetDrMd& (rp&,1)
END SUB
SUB Outline (Outline$,a%,b%,x%,y%,rp&) STATIC
LET Outline%=LEN(Outline$)
IF x%=-1 THEN x%=306-Outline%*4 'Wenn fÜr x -1 angegeben, dann zentrieren
LET Outline$=Outline$+CHR$(0)
CALL SetDrMd& (rp&,0)
CALL SetAPen& (rp&,a%)
FOR i%=x%-1 TO x%+1
FOR j%=y%-1 TO y%+1
CALL Move& (rp&,i%,j%)
CALL Text& (rp&,SADD(Outline$),Outline%)
NEXT
NEXT
CALL SetAPen& (rp&,b%)
CALL Move& (rp&,x%,y%)
CALL Text& (rp&,SADD(Outline$),Outline%)
CALL SetAPen& (rp&,a%)
END SUB
SUB Taste (Ein$,Aus$) STATIC
Ein$=UCASE$(Ein$) : Enthalten=0
WHILE Enthalten=0
Aus$=""
WHILE Aus$=""
Aus$=UCASE$(INKEY$)
SLEEP
WEND
Enthalten=INSTR (Ein$,Aus$)
WEND
END SUB
SUB UpperCase (Ein$,Aus$) STATIC
Aus$=""
FOR i=1 TO LEN(Ein$)
Pruef=ASC(MID$(Ein$,i,1))
IF Pruef >=97 AND Pruef<=122 THEN
Aus$=Aus$+CHR$(Pruef-32)
ELSEIF Pruef >=224 AND Pruef <=246 THEN
Aus$=Aus$+CHR$(Pruef-32)
ELSEIF Pruef >=248 AND Pruef <=254 THEN
Aus$=Aus$+CHR$(Pruef-32)
ELSEIF Pruef=223 THEN
Aus$=Aus$+"SS"
ELSE
Aus$=Aus$+CHR$(Pruef)
END IF
NEXT
END SUB
SUB xEdit (Ausgabe$,Stellen%,x%,y%,rp&) STATIC
a$="" : Ausgabe$=""
WHILE a$ <> CHR$(13)
a$=""
WHILE a$="" : a$=INKEY$ : WEND
a=ASC(a$)
IF ((a>=32 AND a<=126) OR (a>=161)) AND (LEN(Ausgabe$)<=Stellen%) THEN
Ausgabe$=Ausgabe$+a$
END IF
IF a=8 THEN
IF LEN(Ausgabe$)>0 THEN Ausgabe$=LEFT$(Ausgabe$,LEN(Ausgabe$)-1)
END IF
IF a=127 THEN Ausgabe$=""
Textausgabe&=SADD(Ausgabe$+SPACE$(Stellen%-LEN(Ausgabe$)+1)+CHR$(0))
CALL Move& (rp&,x%,y%)
CALL Text& (rp&,Textausgabe&,Stellen%)
WEND
END SUB